/*
 * Created by 2006-4-5 22:09:16
 * $Id: AjaxDecoratorMapper.java 76 2006-07-06 17:03:18Z wjx $
 */
package com.someok.module.sitemesh;

import java.util.Properties;

import javax.servlet.http.HttpServletRequest;

import com.opensymphony.module.sitemesh.Config;
import com.opensymphony.module.sitemesh.Decorator;
import com.opensymphony.module.sitemesh.DecoratorMapper;
import com.opensymphony.module.sitemesh.Page;
import com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper;

/**
 * sitemesh的mapper实现.由于部分ajax取得的只是页面片断，不需要再用sitemesh来封装页面，所以将此部分
 * 页面排除在外，排除条件是页面头部是否存在“X-Requested-With=XMLHttpRequest”的信息。目前使用的prototype
 * 的ajax方法就在头信息上增加了这个内容，当然，如果不想用prototype的话，只需要在其它的ajax实现上面增加个
 * 头信息的写入即可。
 *
 * <p><a href="AjaxDecoratorMapper.java.html"><i>View Source</i></a></p>
 *
 * @author wjx
 * @version $Revision: 76 $ $Date: 2006-07-07 01:03:18 +0800 (星期五, 07 七月 2006) $
 */
public class AjaxDecoratorMapper extends AbstractDecoratorMapper {
	public void init(Config config, Properties properties, DecoratorMapper parent) throws InstantiationException {
		super.init(config, properties, parent);
	}

	public Decorator getDecorator(HttpServletRequest request, Page page) {
		String pageHead = request.getHeader("X-Requested-With");

		if ("XMLHttpRequest".equalsIgnoreCase(pageHead)) {
			return getNamedDecorator(request, null);
		}
		return super.getDecorator(request, page);
	}
}
